﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

public partial class conversation : System.Web.UI.Page
{
    VLGDataContext _db15 = new VLGDataContext();
    CommonPage cmcon = new CommonPage();
    static string prev = String.Empty;
    protected void Page_Load(object sender, EventArgs e)
    {
        Session["currentItem"] = "";
        if (!IsPostBack)
        {
            try
            {
                prev = Request.UrlReferrer.ToString();
            }
            catch
            {
                prev = "Default.aspx";
            }
            if (Session["KhachHang"] != null)
            {
                try
                {
                    int idNguoiGui = cmcon.Customer.idAcc;
                    //string idRelateG = Request.QueryString["idgig_lq"];
                    string idNguoiNhan = Request.QueryString["user"];
                    VLGAccount vlgac = _db15.VLGAccounts.Single(ka => ka.UsernameE == idNguoiNhan);
                    //if (!cmcon.Customer.UsernameE.Equals(idNguoiNhan))
                    // {
                    string idMes = Request.QueryString["_pm"];
                    //VLGAccount cg = _db15.VLGAccounts.Single(pplc=>pplc.UsernameE==idNguoiNhan);
                    lblNB.Text = idNguoiNhan;
                    // lblNguoiNhan3.Text = idNguoiNhan;
                    if (String.IsNullOrEmpty(idMes))
                    {

                        try
                        {
                            PMessage pes2 = _db15.PMessages.Single(pli => pli.idAccNhan == vlgac.idAcc && pli.idAccGui == idNguoiGui);
                            if (pes2.ViPham == true)
                            {
                                khungcm.Style.Add("display", "none");
                                khungerr.Style.Add("display", "block");
                            }
                            link_unspam.CommandArgument = pes2.idMess.ToString();
                        }
                        catch (Exception cdff)
                        {
                            //Response.Write(cdff.Message);    
                        }

                        hthi();

                    }
                    else
                    {
                        link_unspam.CommandArgument = idMes;
                        PMessage pes = _db15.PMessages.Single(lcaq => lcaq.idMess == int.Parse(idMes));

                        if (pes.ViPham == true)
                        {
                            khungcm.Style.Add("display", "none");
                            khungerr.Style.Add("display", "block");
                        }
                        hthi();

                    }

                    // thong tin nguoi dung
                    if (!String.IsNullOrEmpty(cmcon.Customer.urlAvatar))
                    {
                        currA.Src = "avatar/ava" + cmcon.Customer.idAcc + ".jpg";
                        currA.Width = 31;
                        currA.Height = 31;
                    }
                    else
                    {
                        currA.Src = "avatar/noavatar.jpg";
                        currA.Width = 31;
                        currA.Height = 31;
                    }
                    // }
                    //else
                    //{
                    //    Response.Redirect(prev);
                    //}
                }
                catch (Exception ppc)
                {
                    //Response.Redirect(ResolveClientUrl("warnLogin.aspx"));
                    Response.Write(ppc.Message);
                    return;
                }
            }
            else
            {
                // Response.Redirect(ResolveClientUrl("accessDenied.aspx"));
            }
        }
    }

    void hthi()
    {
        //string idRelateG = Request.QueryString["idgig_lq"];
        string idMes = Request.QueryString["_pm"];
        string idNNhanMes = Request.QueryString["user"];
        try
        {
            // Nguoi gui ko dc Null = Phai dang nhap
            int idNguoiGui = cmcon.Customer.idAcc;
            // Lay id cua Nguoi Nhan Tin Nhan ra
            VLGAccount accNhan = _db15.VLGAccounts.Single(al => al.UsernameE == idNNhanMes);
            // Nguoi Nhan luon ko Null
            int idNNhanTN = accNhan.idAcc;
            //Response.Write(idNNhanTN.ToString());
            // Neu idMess != Null
            if (!String.IsNullOrEmpty(idMes))
            {
                //Lay thong tin trong table PMessage
                var itemMe = from msg in _db15.PMessDetails
                             where msg.idMess == int.Parse(idMes)
                             select new { msg.PMessage.ViPham, msg.idNguoiGui, msg.NoiDungCM, msg.idMessDetails, msg.urlFile };

                DataList1.DataSource = itemMe;
                DataList1.DataBind();
                txt_mess.Text = "";

            }
            else
            {

                // ktra xem có Mess cũ ko
                try
                {
                    var p = from ck in _db15.PMessages
                            where (ck.idAccGui == idNguoiGui && ck.idAccNhan == idNNhanTN) ||
                                (ck.idAccGui == idNNhanTN && ck.idAccNhan == idNguoiGui)
                            select ck;

                    var itemMe2 = from msg in _db15.PMessDetails
                                  where msg.idMess == p.FirstOrDefault().idMess
                                  select new { msg.PMessage.ViPham, msg.idNguoiGui, msg.NoiDungCM, msg.idMessDetails, msg.urlFile };
                    DataList1.DataSource = itemMe2;
                    DataList1.DataBind();
                    txt_mess.Text = "";
                    Label1.Text = p.FirstOrDefault().idMess.ToString();

                }
                catch (Exception ac)
                {
                    if (idNguoiGui == idNNhanTN)
                    {
                        Response.Redirect(prev);
                    }
                    else
                    {
                        PMessage pmnew = new PMessage()
                        {
                            idAccGui = idNguoiGui,
                            idAccNhan = idNNhanTN,
                            NgayGui = DateTime.Now,
                            ViPham = false,
                            ndlandau = "Nội dung mới tạo",
                        };
                        _db15.PMessages.InsertOnSubmit(pmnew);
                        _db15.SubmitChanges();
                        Label1.Text = pmnew.idMess.ToString();
                    }
                }
            }
        }
        catch
        {
            //Response.Redirect(ResolveClientUrl("accessDenied.aspx")); 
        }
    }
    protected void linksaipham_Command(Object sender, CommandEventArgs e)
    {
        string idMess = e.CommandArgument.ToString();
        PMessDetail pm = _db15.PMessDetails.Single(pa => pa.idMessDetails == int.Parse(idMess));
        PMessage pmes = _db15.PMessages.Single(cpo => cpo.idMess == pm.idMess);
        try
        {
            int idCurUser = cmcon.Customer.idAcc;
            if (cmcon.Customer.idAcc == pm.idNguoiGui)
            {
                Literal2.Text = "<script type='text/javascript'>alert('Bạn không thể tự báo cáo tin nhắn của mình sai phạm');</script>";
                return;
            }
            else
            {
                Literal2.Text = "<script type='text/javascript'>alert('Đã gửi báo cáo vi phạm');</script>";
                //Response.Write(lb.Text);
                // PMessage pm = _db15.PMessages.Single(pa=>pa.id);
                //pm.ViPham = true;
                pmes.ViPham = true;
                pmes.nguoiBao = idCurUser;
            }
            _db15.SubmitChanges();
            if (pmes.ViPham == true)
            {
                khungcm.Style.Add("display", "none");
                khungerr.Style.Add("display", "block");
            }
            // string idc =Request.Url.AbsoluteUri;
            Response.Redirect(ResolveClientUrl("inboxlist.aspx"));
            //Response.Redirect(idc);
            // txt_mess.Text = "";
            // hthi();
        }
        catch (Exception cckldfkf)
        {
            Response.Write(cckldfkf.Message);
            //Response.Redirect(ResolveClientUrl("Default.aspx"));
            // cmcon.MessageBox("Bạn đã thoát !");
        }
    }
    protected void btn_SendMess_Click(object sender, EventArgs e)
    {
        try
        {
            int idNguoiGui = cmcon.Customer.idAcc;
            string idMess = Request.QueryString["_pm"];
            string idNguoiNhan = Request.QueryString["user"];
            VLGAccount lc = _db15.VLGAccounts.Single(ql => ql.UsernameE == idNguoiNhan);
            int idnguoiNhan2 = lc.idAcc;

            if (!String.IsNullOrEmpty(idNguoiNhan))
            {
                if (FileUpload1.HasFile)
                {
                    //string[] filename = PathDirection. FileUpload1.FileName.Split('.');
                    string[] filename = Path.GetFileName(FileUpload1.FileName).Split('.');
                    string duoifile = filename[1];
                    if (FileUpload1.PostedFile.ContentLength > 204820480)
                    {
                        Literal2.Text = "<script type='text/javascript'>alert('File không được lớn hơn 20MB');</script>";
                        return;
                    }
                    else if (!duoifile.Equals("rar") && !duoifile.Equals("zip"))
                    {
                        Literal2.Text = "<script type='text/javascript'>alert('Chỉ chấp nhận file .rar va .zip');</script>";
                        return;
                        // Response.Write(duoifile);
                    }
                    else
                    {
                        if (!String.IsNullOrEmpty(idMess))
                        {
                            try
                            {
                                PMessage pm11 = _db15.PMessages.Single(ql => ql.idMess == int.Parse(idMess));
                                if (pm11.ViPham == false)
                                {
                                    PMessDetail pmes = new PMessDetail()
                                    {
                                        idNguoiGui = idNguoiGui,
                                        idNguoiNhan = idnguoiNhan2,
                                        NgayCM = DateTime.Now,
                                        NoiDungCM = txt_mess.Text.Trim(),
                                        urlFile = FileUpload1.FileName,
                                        idMess = int.Parse(idMess)
                                    };
                                    _db15.PMessDetails.InsertOnSubmit(pmes);
                                    _db15.SubmitChanges();

                                    // lấy dòng cập nhật mới nhất gán lên
                                    pm11.ndlandau = pmes.NoiDungCM;
                                    _db15.SubmitChanges();
                                    string duongdan = Server.MapPath("documents/" + FileUpload1.FileName);
                                    FileUpload1.SaveAs(duongdan);


                                    Response.Redirect(ResolveClientUrl("inboxlist.aspx"));
                                    // hthi();
                                    //txt_mess.Text = "";
                                }
                                else
                                {
                                    cmcon.MessageBox("Không thể gửi tin nhắn ! Vì có ai đó báo cáo đây là tin spam");
                                }
                            }
                            catch
                            {
                                Response.Write("Co van de");
                            }

                        }
                        else
                        {

                            try
                            {
                                PMessage pm12 = _db15.PMessages.Single(ql => ql.idMess == int.Parse(Label1.Text.Trim().ToString()));
                                if (pm12.ViPham == false)
                                {
                                    PMessDetail pmes2 = new PMessDetail()
                                    {
                                        idNguoiGui = idNguoiGui,
                                        idNguoiNhan = idnguoiNhan2,
                                        NgayCM = DateTime.Now,
                                        NoiDungCM = txt_mess.Text.Trim(),
                                        urlFile = FileUpload1.FileName,
                                        idMess = int.Parse(Label1.Text.ToString()),

                                    };
                                    _db15.PMessDetails.InsertOnSubmit(pmes2);
                                    _db15.SubmitChanges();

                                    pm12.ndlandau = pmes2.NoiDungCM;
                                    _db15.SubmitChanges();

                                    string duongdan = Server.MapPath("documents/" + FileUpload1.FileName);
                                    FileUpload1.SaveAs(duongdan);
                                    //Reload lại
                                    Response.Redirect(ResolveClientUrl("inboxlist.aspx"));
                                    // hthi();
                                    //txt_mess.Text = "";
                                }
                                else
                                {
                                    cmcon.MessageBox("Không thể gửi tin nhắn ! Vì có ai đó báo cáo đây là tin spam");
                                }
                                Response.Write("bb1");
                            }
                            catch
                            {
                                Response.Write("aa1");
                            }
                        }
                    }
                }
                else
                {
                    if (!String.IsNullOrEmpty(idMess))
                    {
                        try
                        {
                            PMessage pm13 = _db15.PMessages.Single(ql => ql.idMess == int.Parse(idMess));
                            if (pm13.ViPham == false)
                            {
                                PMessDetail pmes = new PMessDetail()
                                {
                                    idNguoiGui = idNguoiGui,
                                    idNguoiNhan = idnguoiNhan2,
                                    NgayCM = DateTime.Now,
                                    NoiDungCM = txt_mess.Text.Trim(),
                                    urlFile = null,
                                    idMess = int.Parse(idMess)
                                };
                                _db15.PMessDetails.InsertOnSubmit(pmes);
                                _db15.SubmitChanges();
                                // Response.Redirect(ResolveClientUrl("conversation.aspx"));

                                // lấy dòng cập nhật mới nhất gán lên
                                pm13.ndlandau = pmes.NoiDungCM;
                                _db15.SubmitChanges();

                                // reload lai
                                //Response.Redirect(Request.Url.AbsoluteUri);
                                Response.Redirect(Request.Url.AbsoluteUri);
                                hthi();
                                txt_mess.Text = "";
                            }
                            else
                            {
                                cmcon.MessageBox("Không thể gửi tin nhắn ! Vì có ai đó báo cáo đây là tin spam");
                            }
                        }
                        catch
                        {
                            Response.Write("Co van de");
                        }
                    }
                    else
                    {
                        try
                        {
                            PMessage pm1 = _db15.PMessages.Single(ql => ql.idMess == int.Parse(Label1.Text.Trim().ToString()));
                            if (pm1.ViPham == false)
                            {
                                PMessDetail pmes2 = new PMessDetail()
                                {
                                    idNguoiGui = idNguoiGui,
                                    idNguoiNhan = idnguoiNhan2,
                                    NgayCM = DateTime.Now,
                                    NoiDungCM = txt_mess.Text.Trim(),
                                    urlFile = "",
                                    idMess = int.Parse(Label1.Text.ToString()),
                                };
                                _db15.PMessDetails.InsertOnSubmit(pmes2);
                                _db15.SubmitChanges();

                                pm1.ndlandau = pmes2.NoiDungCM;
                                _db15.SubmitChanges();

                                //Reload lại
                                Response.Redirect(Request.Url.AbsoluteUri);
                                // Response.Redirect(Request.Url.AbsoluteUri);
                                hthi();
                                txt_mess.Text = "";
                            }
                            else
                            {
                                cmcon.MessageBox("Không thể gửi tin nhắn ! Vì có ai đó báo cáo đây là tin spam");
                            }
                            Response.Write("bb1");
                        }
                        catch
                        {
                            Response.Write("aa1");
                        }
                    }
                }
            }
            else
            {
                Response.Redirect(ResolveClientUrl("accessDenied.aspx"));
            }
        }
        catch (Exception aa)
        {
            //Response.Redirect(ResolveClientUrl("accessDenied.aspx"));
            Response.Write(aa.Message);
        }
    }
    protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    {

    }
    protected void link_unspam_Click(Object sender, CommandEventArgs e)
    {
        string idMess = e.CommandArgument.ToString();
        PMessage pm4 = _db15.PMessages.Single(lcka => lcka.idMess == int.Parse(idMess));

        // Kiem tra có phải người Unspam là người đã Lock hay ko
        int currUse = cmcon.Customer.idAcc;
        if (currUse == pm4.nguoiBao)
        {
            pm4.ViPham = false;
            _db15.SubmitChanges();
            Literal2.Text = "<script type='text/javascript'>alert('Đã mở lại chức năng gửi tin nhắn !');</script>";
            khungcm.Style.Add("display", "block");
            khungerr.Style.Add("display", "none");

            // Reload lai
            Response.Redirect(Request.Url.AbsoluteUri);
            hthi();
        }
        else
        {
            Literal2.Text = "<script type='text/javascript'>alert('Chỉ có người báo mới có thể Un-spam !');</script>";
        }
    }
}